package dao_redis

import (
	"common/global"
	"context"
	"fmt"
	"go.uber.org/zap"
)

// Len 获取秒杀商品数量
func Len(id int64) int64 {
	key := fmt.Sprintf("spikes_product_%d", id)
	result, err := global.Client.LLen(context.Background(), key).Result()
	if err != nil {
		zap.S().Error("获取长度失败")
		return 0
	}
	return result
}

// SnappedSpikesProduct 抢购秒杀商品
func SnappedSpikesProduct(id int64) error {
	key := fmt.Sprintf("spikes_product_%d", id)
	err := global.Client.RPop(context.Background(), key).Err()
	if err != nil {
		zap.S().Error(err, "抢购秒杀商品失败")
		return err
	}
	return nil
}

// RestoreSeckillStock 恢复秒杀库存到Redis（支付超时回滚用）
func RestoreSeckillStock(id int64) error {
	key := fmt.Sprintf("spikes_product_%d", id)
	// 向Redis列表中添加一个库存项
	err := global.Client.LPush(context.Background(), key, 1).Err()
	if err != nil {
		zap.S().Error(err, "恢复秒杀库存失败")
		return err
	}
	return nil
}
